// pages/ap_wifi_config/ap_wifi_config.js
import Dialog from '@vant/weapp/dialog/dialog';
var config = require('../../config.js')
var dg_show = null;

Page({

  /**
   * 页面的初始数据
   */
  data: {
        clickFlag: true,
        // right_top_txt:"重新获取",
        right_top_txt: "",
        wifi_input_box: false,
        wifi_list_box: false,
        wifi_hint_box: true,
        title_txt_show:false,
        wifi_name:'',
        wifi_passwd:'',
        token:"",
       setInter: '',
    wifi_list: [],
    // wifi_list: [
    //   {
    //     "ssid": "AIPAI",
    //     "rssi": -55,
    //     "channel": 1
    //   },
    //   {
    //   "ssid": "408",
    //   "rssi": -68,
    //   "channel": 1
    // }, {
    //   "ssid": "TP-LINK_9280",
    //   "rssi": -74,
    //   "channel": 1
    // }, {
    //   "ssid": "涔愮粎閰掑簵",
    //   "rssi": -77,
    //   "channel": 1
    // }, {
    //   "ssid": "ChinaNet-YsVw",
    //   "rssi": -65,
    //   "channel": 8
    // }, {
    //   "ssid": "涔愮粎閰掑簵",
    //   "rssi": -71,
    //   "channel": 11
    // }, {
    //   "ssid": "涔愮粎閰掑簵",
    //   "rssi": -74,
    //   "channel": 11
    // }, {
    //   "ssid": "www.cnzhyjt.com/guest",
    //   "rssi": -79,
    //   "channel": 11
    // }
    // ],
   
  },
  onTopClickRight() {
    console.log('onTopClickRight')
    this.getWifiList()
  },
 
  onTopClickLeft() {
    var _this = this
    console.log('onTopClickLeft', _this.data.wifi_list_box)
   
    // wx.navigateBack({
    //   delta: 1
    // })
    if (_this.data.wifi_list_box)
    {
      _this.setData({
        wifi_list_box: false,
        wifi_hint_box: true,
      })
    }
   else
   {
      Dialog.confirm({
        title: '提示',
        confirmButtonText: '继续连接',
        cancelButtonText: '退出连接',
        message: '设备连接过程中，请勿退出该页面',
      })
        .then(() => {
          // on confirm
        })
        .catch(() => {
          // on cancel
          wx.navigateBack({ changed: true });
        });
   }
   // wx.navigateBack({ changed: true });
  },

  onWifiClose()
  {
    console.log('onWifiClose')
  },

  onWifiCnfirm()
  {
    console.log('onWifiCnfirm')
    wx.navigateTo({
      url: '../ap_wifi_input/ap_wifi_input?token=' + this.data.token,
    })
  },

  onManualinput(e){
    console.log("onManualinput", e)
    wx.navigateTo({
      url: '../ap_wifi_input/ap_wifi_input?token=' + this.data.token,
    })
  },

  passWdInput (e) {
    console.log("passWdInput", e.detail)
    this.setData({
      wifi_passwd: e.detail
    })
    // /console.log("passWdInput", this.data.wifi_passwd)
  },

  onBtnInputWifi(){
    console.log('onBtnInputWifi')
    var _this = this
    wx.startWifi({
      success(res) {
        console.log(res.errMsg)
        if (res.errMsg == "startWifi:ok") {
          wx.getConnectedWifi({
            success: function (e) {
              console.log("wifi e:", e)
              if (e.errMsg == "getConnectedWifi:ok") {
                var SSID = e.wifi.SSID
              // var SSID = e.wifi.SSID
                console.log("SSID:", SSID)
                wx.navigateTo({
                  url: '../ap_wifi_input/ap_wifi_input?wifi_name=' + SSID + '&token=' + _this.data.token,
                }) 
              }
            },
            fail: function (e) {
              console.log("wifi err:", e)
              wx.navigateTo({
                url: '../ap_wifi_input/ap_wifi_input?token=' + _this.data.token,
              }) 
            }

          })
        }
        else
        {
          wx.navigateTo({
            url: '../ap_wifi_input/ap_wifi_input?token=' + _this.data.token,
          }) 
        }
      }
    }) 
  },
 
  onConfigWifi()
  {
    console.log("onConfigWifi")
    console.log("wifi_name:", this.data.wifi_name)
    console.log("wifi_passwd:", this.data.wifi_passwd)
    wx.showLoading({
      title: 'WIFI正在配置中...',
    })
    setTimeout(function () {
      wx.hideLoading()
    }, 2000)
    try {
      wx.setStorageSync('wifi:' + this.data.wifi_name, this.data.wifi_passwd)
    } catch (e) { }

   
  },

  to_onConnect(event){
    console.log("to_onConnect", event)
    console.log("value", event.currentTarget.dataset.value)
    let  wfpasswd =""

    try {
      wfpasswd = wx.getStorageSync('wifi:' + event.currentTarget.dataset.value)
      console.log("wfpasswd", wfpasswd)
    } catch (e) { }
    
   
    wx.navigateTo({
      url: '../ap_wifi_input/ap_wifi_input?wifi_name=' + event.currentTarget.dataset.value + "&wifi_passwd=" + wfpasswd+'&token='+this.data.token,
    })

    // this.setData({
    //   // wifi_input_box: true,
    //   wifi_hint_box: true,
    //   wifi_list_box: false,
    //   wifi_name: event.currentTarget.dataset.value.SSID,
    //   wifi_passwd: wfpasswd
    // })
   
  },

  merge(arr1 = [], arr2 = [])
  {
    for (var i = 0; i < arr2.length;i++ )
    {
      for (var j = 0; j < arr1.length; j++)
      {
        if (arr2[i] == arr1[j])
        {
          break;
        }
      }
     
      if (j >= arr1.length )
       arr1.push(arr2[i]);
    }

    return arr1;
  },




  // getWifiList() {
  //   console.log("getWifiList")
  //   var __this = this;
  //   wx.showLoading({
  //     title: '正在搜索WIFI...',
  //   })
  //   setTimeout(function () {
  //     wx.hideLoading()
  //   }, 2000)

  //   wx.startWifi({
  //     success(res) {
  //       console.log("startWifi",res.errMsg)

  //       wx.onGetWifiList(function (res) {
  //         console.log("onGetWifiList",res.errMsg)

  //         if (res.wifiList.length) {
  //           var i = 0;

  //          // let arr = [].concat(__this.data.wifi_list, res.wifiList)
  //           console.log("wifilist1:", res.wifiList)
  //           // let arr2 = __this.merge(__this.data.wifi_list,res.wifiList)
  //           // __this.setData({
  //           //   title_txt_show: false
  //           // })
  //           // console.log("wifilist2:", arr2)
  //           __this.setData({
  //             wifi_list: res.wifiList.reverse(),
  //             wifi_list_box: true,
  //             wifi_hint_box: false
  //           })
  //           wx.hideLoading()

  //           try {
  //             wx.setStorageSync('wifilist', res.wifiList)
  //           } catch (e) { } 

  //           // for (i = 0; i < res.wifiList.length; i++) {
  //           //   console.log('SSID:', res.wifiList[i].SSID)
  //           //   console.log('BSSID:', res.wifiList[i].BSSID)
  //           //   var str = res.wifiList[i].SSID
  //           //   if (str.indexOf('AP-98') != -1) {
  //           //     wx.connectWifi({
  //           //       SSID: str,
  //           //       password: '',
  //           //       success(res) {
  //           //         console.log(res.errMsg)
  //           //         wx.offGetWifiList();
  //           //       }
  //           //     })
  //           //   }
  //           // }
           
  //         } else {
  //           console.log("wifi else wifi_list:", __this.data.wifi_list)
  //         }
  //       })
  //       console.log("wifi2 else wifi_list:", __this.data.wifi_list, __this.data.wifi_list.length)
  //       wx.getWifiList()

  //       if (__this.data.wifi_list.length==0)
  //       {

  //         wx.hideLoading()
  //       //  __this.showDg()
  //       }

  //     },
  //     fail(res){
  //       console.error("wifi st",res)
  //     }
  //   })



  // },

  getWifiList() {
    var _this = this
    console.log("getWifiList")
    wx.startWifi({
      success(res) {
        console.log(res.errMsg)
        if (res.errMsg == "startWifi:ok") {
          wx.getConnectedWifi({
            success: function (e) {
              console.log("wifi e:", e)
              if (e.errMsg == "getConnectedWifi:ok") {
                var str = e.wifi.SSID
                console.log("indexOf:", str.indexOf('Lanbo-'), 'length:', str.length)
                if (((str.indexOf('Lanbo-') == 0) && (str.length > 5)) ||
                  ((str.indexOf('AP-') == 0) && (str.length > 5))) {

                    wx.showToast({ title: '', icon: 'loading', duration: 10000 });
                    wx.request({
                      url: 'http://192.168.5.11:8899',
                      method: 'POST',
                      dataType: "json",
                      header: {
                        'content-type': 'application/json' // 默认值
                      },
                      data: {
                        code: '300',
                        client: '' + config.wifi_ser_client
                      },

                      timeout: 9000,
                      success(res) {
                        // console.log(res.data)
                        console.log("code:", res.data.code)
                        wx.hideToast();
                        if (res.data.code == "200")
                        {
                          _this.setData({
                            wifi_list_box: true,
                            wifi_hint_box: false,
                            right_top_txt:"重新获取",
                            wifi_list: res.data.wifi
                          })
                        }


                      },
                      fail(e) {
                        console.error(e)
                        _this.setData({
                          // wifi_list_box: false,
                          // wifi_hint_box: true,
                          right_top_txt: "重新获取",
                         
                        })

                      }
                    })
                }
                else
                {
                  wx.showToast({
                    icon: 'none',
                    title: '请连接设备WIFI热点...',
                  })
                }
              } else {
                wx.showToast({
                  icon: 'none',
                  title: '请连接设备WIFI热点...',
                })
              }
            },
            fail: function (e) {
              console.log("wifi err:", e)
              wx.showToast({
                icon: 'none',
                title: '请连接设备WIFI热点...',
              })
            }

          })
        }
      }
    })      
  },

  isAP_Lanbo()
  {
    var _this = this
    console.log("isAP_Lanbo")

    wx.startWifi({
      success(res) {
        console.log(res.errMsg)
        if (res.errMsg == "startWifi:ok") {
          wx.getConnectedWifi({
            success: function (e) {
              console.log("wifi e:", e)
              if (e.errMsg == "getConnectedWifi:ok") {
                var str = e.wifi.SSID
                console.log("indexOf:", str.indexOf('Lanbo-'), 'length:', str.length)
                //
                if (((str.indexOf('Lanbo-') == 0) && (str.length > 5)) ){
                  console.log("---Lanbo--")
                  if (_this.data.setInter)
                     clearInterval(_this.data.setInter)
                    _this.getWifiList() 
                  // _this.setData({
                  //   wifi_list_box: true,
                  //   wifi_hint_box: false
                  // })

                }
              }
            },
            fail: function (e) {
              console.log("wifi err:", e)
              if (e.errCode == 12005)
              {
                wx.showToast({
                  title: '请打开WIFI',
                  icon: 'none',
                  duration: 2000
                })
              }
              else if (e.errCode == 12001) {
                wx.showToast({
                  title: '当前系统不支持相关能力',
                  icon: 'none',
                  duration: 2000
                })
              }
              else if (e.errCode == 12002) {
                wx.showToast({
                  title: '密码错误',
                  icon: 'none',
                  duration: 2000
                })
              }
              else if (e.errCode == 12003) {
                wx.showToast({
                  title: '连接超时',
                  icon: 'none',
                  duration: 2000
                })
              }
              else if (e.errCode == 12004) {
                wx.showToast({
                  title: '重复连接 Wi-Fi',
                  icon: 'none',
                  duration: 2000
                })
              }
              else if (e.errCode == 12006) {
                wx.showToast({
                  title: '请先打开GPS定位',
                  icon: 'none',
                  duration: 2000
                })
              }
              else if (e.errCode == 12007) {
                wx.showToast({
                  title: '请先允许访问该网络',
                  icon: 'none',
                  duration: 2000
                })
              }
              else if (e.errCode == 12008) {
                wx.showToast({
                  title: '无效 SSID',
                  icon: 'none',
                  duration: 2000
                })
              }
              else if (e.errCode == 12009) {
                wx.showToast({
                  title: '系统运营商配置拒绝连接 Wi-Fi',
                  icon: 'none',
                  duration: 2000
                })
              }
              // else if (e.errCode == 12010) {
                // wx.showToast({
                //   title: '系统其他错误' + e,
                //   icon: 'none',
                //   duration: 2000
                // })
              // }
              else if (e.errCode == 12011) {
                wx.showToast({
                  title: '应用在后台无法配置 Wi-Fi',
                  icon: 'none',
                  duration: 2000
                })
              }
              else if (e.errCode == 12013) {
                wx.showToast({
                  title: '系统保存的 Wi-Fi 配置过期，建议忘记 Wi-Fi 后重试',
                  icon: 'none',
                  duration: 2000
                })
              }
            }

          })
        }
      }
    })

 
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    var _this = this;
    console.log('onLoad options:', options);
    console.log('onLoad token:', options.token);
    // console.log('onLoad wifi_list:', this.data.wifi_list);
    var wifilist= []
    try {
      wifilist = wx.getStorageSync('wifilist')
    } catch (e) { } 
    console.log('onLoad wifi_list2:', wifilist);

      _this.setData({
        token: options.token
      })

    
   
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {
    var _this = this
    console.log("onShow:", this.data.wifi_list_box)

       this.isAP_Lanbo()
      _this.data.setInter = setInterval(function () {
        if (_this.data.wifi_list_box)
        {
          clearInterval(_this.data.setInter)
        }
       else
       {
          _this.isAP_Lanbo();
       } 

      }, 3500) //延迟时间 这里是3秒
    
      
   
  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () {

  },


  gotoHomePage: function () {//自定义页面跳转方法
    let that = this;
    let pages = getCurrentPages();
    console.log("clickFlag:", that.data.clickFlag)
    console.log("pages:", pages)

    if (that.data.token == '')
    {
      wx.showToast({
        title: '请先连接正常网络获取验证',
        icon: 'none',
        duration: 2000
      })
      wx.request({
        url: config.url.getClientToken,
        method: 'POST',
        data: {
          appid: config.appid
        },
        header: {
          "Content-Type": "application/x-www-form-urlencoded"
        },
        success(res) {
          console.log(res.data)

          if (res.data.code == "200") {

            that.setData({
              token: '' + res.data.data
            })


          }
          else {
            wx.showToast({
              title: '获取用户ID失败',
              icon: 'none',
              duration: 2000
            })
          }

        },

      })

      return ;
    }
    //------------------
    if (that.data.clickFlag) {
      return;
    } else {
      that.setData({ clickFlag: false });
    }
    //------------------
    wx.navigateTo({
      url: '../ap_wifi_config/ap_wifi_config?token=' + that.data.token+ '&wifi_list=' + that.data.wifi_list,
    })
  },
 
  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {
    if (this.data.setInter)
      clearInterval(this.data.setInter)

    this.gotoHomePage();
  },

 
})